Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

228
Visualizações
No se pudo enviar a [ObjectId] por valor

Por favor ayudame con esto. Tengo una consulta de publicación y quiero guardarla en dos tablas por separado. Pero encontré un mensaje de error del cartero "Transmitir a [ObjectId] falló por valor" ¡Por favor, ayúdenme! ¡Gracias!

Aquí está mi código a continuación:

PrimerModelo

 const mongoose= require('mongoose'); const { Schema } = mongoose; const class = require('./classModel'); const SubjectSchema = new mongoose.Schema({ name: { type: String, unique: true }, address: { type: String, }, classes: [ { type: Schema.Types.ObjectId, ref: class.schema } ]

})

segundo modelo

 const classSchema = new mongoose.Schema({ name: { type: String, unique: true },

})

y aquí está mi controlador

 exports.create = catchAsync (async (req, res, next) => { const newSubject = await Subject.create(req.body) let payload = { body : { ...req.body.classes, _id: new mongoose.Types.ObjectId(), golf_course_id: newGolfCourse._id } } const newClass = await Class.createClass(payload) if(!newClass ) { res.status(201).json({ status: 'success', data : { subject: newSubject } }) }

})

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Es porque está tratando de configurar sus classes en su Subject antes de que tengan ObjectIds . En su Subject Schema tiene la siguiente línea:

 classes: [ { type: Schema.Types.ObjectId, ref: class.schema } ]

Lo que le dice a Mongoose que está haciendo referencia a otro modelo con su ObjectId asignado, pero en su caso, cuando intenta guardarlo:

 await Subject.create(req.body)

Estas clases aún no tienen ID, por lo que debe crearlas. No los configuraría manualmente, cuando la mangosta los configura por sí solo. Así que la siguiente sería una sugerencia.

 try { const classes = req.body.classes.map(async (className) => { const newClass = new Class({ name: className }); newClass.golf_course_id = newGolfCourse._id; await newClass.save(); return newClass; }); const results = await Promise.all(classes); const newSubject = await new Subject({ name: req.body.name, address: req.body.address, classes: results, }); res.send(newSubject); } catch (error) { console.log(error); }

Este método crea las clases tal como las tenía en su código, pero luego le da las clases al Sujeto después de que se hayan creado, de esa manera el Subject puede usarlas. De lo contrario, obtendrá un error de ObjectId porque no puede asignar un campo con una referencia, por ejemplo classes: [ { type: Schema.Types.ObjectId, ref: class.schema } ] sin una reference a ese elemento. Por cierto, en su ref: class.schema solo use ref: 'Class'

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda